#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <pthread.h>
#include <semaphore.h>

int main(int argc, char const *argv[])
{
    // 创建共享内存
    key_t key = ftok(".", 1);
    int shmid = shmget(key, 1024, IPC_CREAT | 0777);

    // 内存映射
    char *p = shmat(shmid, NULL, 0);

    // 创建有名信号量
    sem_t *semid = sem_open("sem",O_CREAT | O_EXCL);

    if (semid == SEM_FAILED)
    {
        perror("sem_open");
        return 1;
    }

    // 初始化信号量
    sem_init(semid, 0, 1);

    // 释放信号量
    sem_close(semid);

    // 删除信号量
    sem_unlink("sem");
    
    
    return 0;
}
